from flask import Flask, render_template, flash, redirect, url_for

app = Flask(__name__)
# 使用 flash message 必须设置这个
app.secret_key = 'hahahahaha'

user = {
    'username': 'Lein Xiao',
    'bio': 'A man who loves movies and music.'
}

movies = [
    {'name': '九品芝麻官', 'year': '1990'},
    {'name': '国产凌凌漆', 'year': '1992'},
    {'name': '大话西游', 'year': '1996'},
    {'name': '少林足球', 'year': '2001'},
]


@app.route("/")
def index():
    return render_template('index.html')


@app.route('/watchlist')
def watch_list():
    return render_template('watchlist.html', user=user, movies=movies)


# 使用lambda表达式简化全局模板变量注入
app.context_processor(lambda: dict(bar='this is a bar', foo='this is a foo'))

# 全局模板变量, 调用render_template函数渲染任意模板时, 下面的函数被调用
@app.context_processor
def inject_foo():
    print('注入全局模板变量')
    foo = 'This is a inject Test!'
    return dict(foo=foo)


# flash message
@app.route('/flash')
def just_flash():
    # 添加一个Flash Message
    flash('一个Flash Message!!!111')
    flash('一个Flash Message!!!222')
    flash('一个Flash Message!!!333')
    # 重定向到index.html显示
    return redirect(url_for('index'))


# 自定义错误页面
@app.errorhandler(404)
def page_not_found(e):
    return render_template('errors/404.html'), 404
